<?php
/**
 * JoiGallery - image gallery component for Joostina
 *
 * Backend AJAX event handler
 *
 * @version 1.0 alpha 12
 * @package JoiGallery
 * @filename joigallery.ajax.php
 * @author JoostinaTeam
 * @copyright (C) 2008-2009 Joostina Team
 * @license see license.txt
 *
 **/

defined('_VALID_MOS') or die();

require_once ($mainframe->getPath('class'));

$task = mosGetParam($_GET,'task','publish');
$id = intval(mosGetParam($_GET,'id','0'));
$act = mosGetParam($_GET,'act','');

switch($task) {
         case 'publish':
               echo publish_x($id);
               return;         			  
        case 'apply':
              switch ($act) {
                      case 'photos':
                            echo save_item();
                            return;
                      case 'categories':
                            echo save_category();
                            return;
                      case 'configuration':
                            echo x_apply();
                            return;
              }
        case 'thumb_cat':
              echo thumb_cat($id);
              return;
        default:
		echo 'error-task';
		return;
}

function publish_x ($id = null) {
  global $my;

  $database = &database::getInstance();

  if (!$id) return 'error-id';

  $query = "SELECT state"
          ."\n FROM #__joigallery"
          ."\n WHERE id = ".(int)$id;

  $database->setQuery($query);
  $state = $database->loadResult();

  if($state == '1') {
    $ret_img = 'publish_x.png';
    $state = '0';
  }
  else {
    $ret_img = 'publish_g.png';
    $state = '1';
  }

  $query = "UPDATE #__joigallery"
          ."\n SET state = ".(int)$state
          ."\n WHERE id = ".$id." ";

  $database->setQuery($query);
  if(!$database->query()) {
    return 'error-db';
  }
  else {
    //Очистка кэша списка объектов 
    mosCache::cleanCache('com_joigallery_admin_item_list');
	
    return $ret_img;
  }
}


function x_apply() {

  $database = &database::getInstance();
  $group = mosGetParam($_POST,'group');
  
  $config = new joiGalleryConfig($database, 'joigallery', $group);
  @$config->save_config();

  mosCache::cleanCache('com_joigallery');  
  return _C_JOIGALLERY_MSG_CONFIG_UPDATED;
}

function save_item() {
  global $option, $task;

  $database = &database::getInstance();

  $row = new joiGalleryPhoto($database);
  $row->bind($_POST);

  $row->default = intval(mosGetParam($_POST, 'default', 0));

  //Необходимо указать название изображения
  if(!$row->name) return _C_JOIGALLERY_MSG_SAVE_ERR_IMG_NAME_EMPTY;
  
  $row->meta_title = trim( $row->meta_title );
  $row->meta_desc  = trim( $row->meta_desc );
  $row->meta_kw    = trim( mb_strtolower ( $row->meta_kw ));

  if ($row->default) {
      $row->clean_default($row->cid);
  }

  if (!$row->id) {
      $row->ordering = 999999999;
  }

  if (!$row->check()) {
      echo $row->getError();
      exit();
  }
  if (!$row->store()) {
      echo $row->getError();
      exit();
  }

  $row->updateOrder('cid = '.(int)$row->cid);
  
  //Очистка кэша списка объектов 
  mosCache::cleanCache('com_joigallery_admin_item_list');
  
  //Очистка кэша списка категорий 
  mosCache::cleanCache('com_content');

  return _C_JOIGALLERY_MSG_IMAGE_UPDATED;
}

function save_category() {
  global $my;

  $database = &database::getInstance();

  $row = new mosCategory($database);
  $row->bind($_POST);

  //Необходимо указать название категории
  if(!$row->name) return _C_JOIGALLERY_MSG_CATEGORY_NO_NAME;

  //Необходимо указать псевдоним категории
  if(!$row->title) return _C_JOIGALLERY_MSG_CATEGORY_NO_TITLE;
  
  //Удалям пробелы из начала и конца строки
  $row->name  = trim($row->name);
  $row->title = trim($row->title);

  if (!$row->id) {
      $row->ordering = 999999999;
  }

  // Избегаем ссылки категории на саму себя
  if ($row->parent_id == $row->id) {
      $row->parent_id = 0;
  }

  $row->section = 'com_joigallery';

  //Получаем метаданные
  $mainframe = &mosMainFrame::getInstance();
  $meta_title = trim( $mainframe->getUserStateFromRequest("meta_title",'meta_title','' ));
  $meta_desc = trim( $mainframe->getUserStateFromRequest("meta_desc",'meta_desc','' ));
  $meta_kw = trim( mb_strtolower ($mainframe->getUserStateFromRequest("meta_kw",'meta_kw','' )));
  
  //Формируем массив, и записываем его в поле "params", разделяя данные "|||"
  $array = array($meta_title, $meta_desc, $meta_kw);
  $row->params = implode("|||", $array);

  $row->published = intval(mosGetParam($_REQUEST, 'published', 0));

  if (!$row->check()) {
      echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";
      exit();
  }
  if (!$row->store()) {
      echo "<script> alert('".$row->getError()."'); window.history.go(-1); </script>\n";
      exit();
  }

  $row->updateOrder('section = \'com_joigallery\'');

  //mosCache::cleanCache('com_categories'); // очистка кэша
  //mosCache::cleanCache('com_joigallery'); // очистка кэша
  
  //Очистка кэша списка объектов 
  mosCache::cleanCache('com_joigallery_admin_item_list');
  
  //Очистка кэша списка категорий 
  mosCache::cleanCache('com_content');
  
  return _C_JOIGALLERY_MSG_CATEGORY_UPDATED;
}

//Применение эскизов к категории
function thumb_cat ($id = null) {

  $database = &database::getInstance();

  if (!$id) return 'error-id';
  //Узнаем, какой категории принадлежит изображение
  //и является ли оно эскизом этой категории
  $query = "SELECT cid, `default`"
          ."\n FROM #__joigallery"
          ."\n WHERE id = ".(int)$id;
  $database->setQuery($query);
  $params = $database->loadObjectList();
  //Идентификатор предыдущего эскиза категории
  $old_id = 0;

  //Если щелкнули по эскизу категории
  if($params[0]->default == '1') {
     //Снимаем его
     $ret_img = 'publish_x.png';
     $new_default = '0';
  }
  //Если щелкнули не по эскизу категории
  else {
        //Узнаем старый эскиз категории, если он был указан
        $query = "SELECT id"
                ."\n FROM #__joigallery"
                ."\n WHERE `default` = 1 AND cid = ".$params[0]->cid." ";
        $database->setQuery($query);
        $old_id = $database->loadResult();

        //Делаем старый эскиз категории неактивным, если он был
        $query = "UPDATE #__joigallery"
                ."\n SET `default` = 0"
                ."\n WHERE `default` = 1 AND cid = ".$params[0]->cid." ";
        $database->setQuery($query);
        if(!$database->query()) return 'error-db';

        //Указываем, что новый эскиз будет эскизом для своей категории
        $new_default = 1;//$params[0]->cid;
        $ret_img = 'publish_g.png'; //указываем что у него будет активная иконка
  }

  //Если прошло успешно, устанавливаем новый эскиз для категории
  $query = "UPDATE #__joigallery"
          ."\n SET `default` = ".$new_default." "
          ."\n WHERE id = ".$id." ";
  $database->setQuery($query);

  if(!$database->query()) return 'error-db';
  
  //mosCache::cleanCache('com_joigallery');
  
  //Очистка кэша списка объектов 
  mosCache::cleanCache('com_joigallery_admin_item_list');
  
  //Очистка кэша списка категорий 
  mosCache::cleanCache('com_content');
  
  return $ret_img; //передаем иконку
}